W17_後端框架 Express + Sequelize


Posted by Christy on 2022-02-02

零、讀書計畫

1. 作業概覽

本週作業部署的地方會是免費空間 heroku 或是自己之前買的主機

hw1: 把 W11 的 blog 改成 Express + Sequelize,體會一下用 JS 寫後端跟用 PHP 的差異。

功能有這些:

  • 登入機制,管理員才可以登入

  • 可以新增、編輯、刪除文章

hw2: 實作 W8 抽獎的 API,做一個抽獎的網站

抽獎品項的名字、圖片還有說明,都是 API 傳回來的,前端只負責 call API 然後顯示就好。

必須有一個後台,可以在後台新增抽獎品項並且設定機率。

詳細需求如下:

身為一個管理員,我希望有一個抽獎頁面讓我管理獎項
身為一個管理員,我希望可以在後台新增抽獎的品項(名字、圖片網址以及說明)以及機率
身為一個管理員,我希望可以在後台編輯抽獎的品項(名字、圖片網址以及說明)以及機率
身為一個管理員,我希望可以在後台刪除抽獎的品項
身為一個管理員,我希望在前台能夠抽出我在後台所設定的獎項

hw3: 簡答題

  1. 什麼是 MVC?

  2. 請寫下這週部署的心得

  3. 寫 Node.js 的後端跟之前寫 PHP 差滿多的,有什麼心得嗎?

2. 預計花費時間:50 小時

開始時間:1/8,結束時間:1/14

實際開始時間:1/8,結束時間:2/2,總共 22 天,89 hrs 31mins,實際時間計算不太準確,有些時間沒有算到,總之就是一個大概。

3. 讀書行動

預計實作事項:

  • 邊看影片邊把簡答題回答出來 1hr:實際情況差不多

  • 部署 heroku 2hrs:實際卡了一天

  • hw1 兩天 16hrs:這個照著留言板的邏輯做,沒有很難。

  • hw2 三天 24hrs:參考下面的心得與心態調整

  • W17 直播檢討 58'55"

實際流程:

MTR 導讀 -- 現代後端開發簡介

  • 相較於 express 這個自由的框架,ruby on rails 就是規則很多的框架,coc 原則 Convention over Configuration 慣例優於配置,可以很快地開發出一個東西出來。

  • sequelize 如果最新版裝不好,降版到 V5 也可以

  • 部署

把影片快速掃過一遍,接著再邊實作邊理解,並寫出理解過後的筆記

實作需要的時間

  • 邊看影片邊把簡答題回答出來 1hr:1hr 行得通,但 20 mins 應該也能辦到

  • 部署 heroku 2hrs:卡一天在環境變數沒有設定好,照著自己寫的操作手冊實作,以後預期希望部署大概是 30 mins 以內

  • hw1 兩天 16hrs:一開始需要理解,不過做幾遍以後,目標是「做一個有簡單 CRUD 的部落格,應該在 30 mins - 60 mins 以內」

  • hw2 三天 24hrs:有了部落格的基礎,抽獎網站主要會花比較多時間的地方是抽獎邏輯,關鍵字可以下「抽獎權重 js」,目標暫時定在三個小時以內完成

  • W17 直播檢討 58'55":用兩倍速看增加效率

4. 自我檢測

P1 學習如何使用 Express 及其相關套件

P1 我理解為什麼會需要框架

P1 了解什麼是 ORM

P1 了解 ORM 的優缺點

P1 了解什麼是 N+1 problem

P1 我知道如何部署 Node.js 應用程式到 heroku

5. 學前關鍵字:Express、ORM、heroku、Sequelize、migration、MVC

6. W17、W18 隨意聊

  • 「知道一個東西為什麼這樣」是很重要的

    比起什麼都不知道,有時候錯誤的理解會更可怕一點

    若是在面試中展現出這部分的觀念錯誤,滿有可能影響到面試的

  • sequelize 只是個 ORM,它也可以建立資料庫,但是當資料庫更動時,sequelize 不會自動修改;migration 就是自己把建立 table 的腳本寫好並且執行,新增 table、修改欄位,去操控資料庫的程式碼並且有版本紀錄可以追溯,migration 的目的是寫出「資料庫應該怎麼變動」的腳本,同時 model 也要改,因為 migration 跟 model 必須一致

  • 推薦參考:初探 Sequelize

  • week17、18 的作業中其實不應該把 config.json 一起 commit 上來,因為那個等於是你資料庫的設定檔

一、筆記內容

1. 後端好朋友 Express 基本介紹與操作

2. 後端好朋友 Express middleware

3. 你今天註冊了嗎?用後端好朋友 express 跟 middleware 們做一個簡單的會員註冊系統

4. Express 實作留言板:新增會員、登入、留言、編輯及刪除

5. 在 Express 上面把資料變美吧

6. ORM & Sequelize 基本使用與介紹

7. Express、ORM & Sequelize 請賜給留言板力量

8. 用後端好朋友們 express & sequelize 實作部落格

9. 利用後端框架 express 實作抽獎網站的 API

10. 部署 express 到 Heroku 並使用 cleardb 資料庫

11. MVC、部署心得、Node.js 後端跟 PHP 差異

二、W17 直播檢討

W17_直播檢討

W19 直播檢討 裡有 W17 - W18 相關:Q12、Q14、Q15

三、心得與心態調整

恐懼來自想像力

雖然這樣唱衰自己不好,但這是另一個框架,想想我前端框架 react 花了好長時間才學起來,後端框架,恩...不行,我要規定自己在短時間內學會,欺騙自己也好,欺騙自己就是能夠學的會,然後現在去開始。

有種被 express 蕊蕊 si 的感覺,可是好像又沒有那麼難,有時候放棄是一種美德,應該說是對錯誤訊息的坦然吧,把錯誤訊息跟要嘗試的東西記下來真的很有幫助,不會讓自己卡在那邊,有時候卡住是因為很煩所以亂試一通。

恐懼都是想像出來的,學之前就覺得作業二很難,原因是我不知道要做什麼,但是仔細看才發現跟想像中的完全不一樣,都是自己在嚇自己。

終於理解作業二在幹嘛了啦,api 的內容是資料,而這個資料會是寫在 controller 裡面一個叫 api 的 method,然後前端只要負責呼叫 api,後端回傳資料。

學習與挫折相處

今天的領悟是「學習跟挫折相處」,在跟著影片實作的過程中,應該是有一些細節被忽略了,有時候會有預期以外的錯誤,有兩個方向可以改善:

a. 提升 debug 能力,有時候暫時放棄是一種美德,因為在「好想找出解答」的心情下,反而更找不出解答。

b. 仔細的跟著影片一步一步做,我現在用的方法是「快速把所有影片看過一遍,接著一個個影片跟著一起做,寫出步驟筆記,把東西全部刪掉,從頭來過;再寫錯誤筆記及多做幾遍;找出規律,把簡化步驟記下來」

發現理解加上做筆記的時間,需要的時間是影片長度的三倍,而這還不包含 debug 的時間喔,能夠有這樣的發現其實也不錯,接著想想要怎麼改善比較好。

預估時數太低了

在計算工作時數好像有點太低了,或者說無法達到預期的時數,有可能是學新東西都是這個情況?希望能再試著改善以後的學習狀況,再想想看要怎麼做比較好。

身體健康,萬事如意

想要變得更強壯

四、其他

Sequel Pro 語言介面恢復英文

如何用 sequel pro 連到之前 xampp 的資料庫

EsLint 我們重頭來過吧

環境變數 Environment Variable

ClearDB id 連續遞增問題

N + 1 problem










Related Posts

D51_W6 直播檢討、W7 開始

D51_W6 直播檢討、W7 開始

個人CodeBase紀錄 - EP.2 不想 Bind data 到吐,來自訂一下 Aspose 的擴充

個人CodeBase紀錄 - EP.2 不想 Bind data 到吐,來自訂一下 Aspose 的擴充

The introduction and difference between class component and function component in React

The introduction and difference between class component and function component in React


Comments